package com.edu.base.ums.metadata.service.impl;

import java.util.Date;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.edu.base.ums.metadata.mapper.SysmMetadataMapper;
import com.edu.base.ums.metadata.domain.SysmMetadata;
import com.edu.base.ums.metadata.service.ISysmMetadataService;
import com.edu.base.ums.metadatavalue.domain.SysmMetadatavalue;
import com.edu.base.ums.metadatavalue.mapper.SysmMetadatavalueMapper;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.common.utils.uuid.IdUtils;

/**
 * 元数据库
支持元数据字段配置，包含一下元数据
1、单层级字段
2、多层级字段
3、多层级末级Service业务层处理
 * 
 * @author admin
 * @date 2021-05-11
 */
@Service
public class SysmMetadataServiceImpl implements ISysmMetadataService 
{
    @Autowired
    private SysmMetadataMapper sysmMetadataMapper;
    
    @Autowired
    private SysmMetadatavalueMapper sysmMetadatavalueMapper;

    /**
     * 查询元数据库
支持元数据字段配置，包含一下元数据
1、单层级字段
2、多层级字段
3、多层级末级
     * 
     * @param id 元数据库
支持元数据字段配置，包含一下元数据
1、单层级字段
2、多层级字段
3、多层级末级ID
     * @return 元数据库
支持元数据字段配置，包含一下元数据
1、单层级字段
2、多层级字段
3、多层级末级
     */
    @Override
    public SysmMetadata selectSysmMetadataById(String id)
    {
        return sysmMetadataMapper.selectSysmMetadataById(id);
    }

    /**
     * 查询元数据库
支持元数据字段配置，包含一下元数据
1、单层级字段
2、多层级字段
3、多层级末级列表
     * 
     * @param sysmMetadata 元数据库
支持元数据字段配置，包含一下元数据
1、单层级字段
2、多层级字段
3、多层级末级
     * @return 元数据库
支持元数据字段配置，包含一下元数据
1、单层级字段
2、多层级字段
3、多层级末级
     */
    @Override
    public List<SysmMetadata> selectSysmMetadataList(SysmMetadata sysmMetadata)
    {
        return sysmMetadataMapper.selectSysmMetadataList(sysmMetadata);
    }

    /**
     * 新增元数据库
支持元数据字段配置，包含一下元数据
1、单层级字段
2、多层级字段
3、多层级末级
     * 
     * @param sysmMetadata 元数据库
支持元数据字段配置，包含一下元数据
1、单层级字段
2、多层级字段
3、多层级末级
     * @return 结果
     */
    @Override
    public int insertSysmMetadata(SysmMetadata sysmMetadata)
	{
		sysmMetadata.setId(IdUtils.simpleUUID());
		sysmMetadata.setCreateBy(SecurityUtils.getUsername());
		sysmMetadata.setCreateDate(new Date());
		return sysmMetadataMapper.insertSysmMetadata(sysmMetadata);
	}

    /**
     * 修改元数据库
支持元数据字段配置，包含一下元数据
1、单层级字段
2、多层级字段
3、多层级末级
     * 
     * @param sysmMetadata 元数据库
支持元数据字段配置，包含一下元数据
1、单层级字段
2、多层级字段
3、多层级末级
     * @return 结果
     */
    @Override
    public int updateSysmMetadata(SysmMetadata sysmMetadata)
    {
    	sysmMetadata.setUpdateBy(SecurityUtils.getUsername());
		sysmMetadata.setUpdateDate(new Date());
        return sysmMetadataMapper.updateSysmMetadata(sysmMetadata);
    }

    /**
     * 批量删除元数据库
支持元数据字段配置，包含一下元数据
1、单层级字段
2、多层级字段
3、多层级末级
     * 
     * @param ids 需要删除的元数据库
支持元数据字段配置，包含一下元数据
1、单层级字段
2、多层级字段
3、多层级末级ID
     * @return 结果
     */
    @Override
    public int deleteSysmMetadataByIds(String[] ids)
    {
    	sysmMetadatavalueMapper.deleteSysmMetadatavalueByMetadata(ids);
        return sysmMetadataMapper.deleteSysmMetadataByIds(ids);
        
    }

    /**
     * 删除元数据库
支持元数据字段配置，包含一下元数据
1、单层级字段
2、多层级字段
3、多层级末级信息
     * 
     * @param id 元数据库
支持元数据字段配置，包含一下元数据
1、单层级字段
2、多层级字段
3、多层级末级ID
     * @return 结果
     */
    @Override
    public int deleteSysmMetadataById(String id)
    {
        return sysmMetadataMapper.deleteSysmMetadataById(id);
    }

	@Override
	public String getName(String name, String id) { 
    	Integer count = sysmMetadatavalueMapper.getNameById(name,id); 
    	return count != null && count != 0 ? "1":"0";
	}
 
}
